﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XmlSpecParser
{
	public class DotNetFunctionParamData
	{
		public string OriginalName
		{
			get;
			set;
		}

		public string Name
		{
			get;
			set;
		}

		public string OriginalType
		{
			get;
			set;
		}

		public string NativeType
		{
			get;
			set;
		}

		public string DotNetType
		{
			get;
			set;
		}

		public bool IsEnum
		{
			get;
			set;
		}

		public bool IsPointer
		{
			get;
			set;
		}

		public bool IsOutput
		{
			get;
			set;
		}

		public bool ShouldUseGenerics
		{
			get;
			set;
		}

        public bool ShouldUseRef
        {
            get;
            set;
        }

        public bool ShouldUseOut
        {
            get;
            set;
        }

        public bool ShouldUseFixed
        {
            get;
            set;
        }

		public bool ShouldUseAddressOfOperator
		{
			get;
			set;
		}

        public DotNetFunctionParamData Clone()
        {
            var copy = new DotNetFunctionParamData()
            {
                OriginalName = this.OriginalName,
                Name = this.Name,
                OriginalType = this.OriginalType,
                NativeType = this.NativeType,
                DotNetType = this.DotNetType,
                IsEnum = this.IsEnum,
                IsPointer = this.IsPointer,
                IsOutput = this.IsOutput,
                ShouldUseGenerics = this.ShouldUseGenerics,
                ShouldUseRef = this.ShouldUseRef,
                ShouldUseFixed = this.ShouldUseFixed,
                ShouldUseAddressOfOperator = this.ShouldUseAddressOfOperator
            };

            return copy;
        }
	}
}
